package com.hex.ds.hdtp.core.app.dqc.service.impl;

import com.hex.ds.hdtp.core.app.common.page.PageData;
import com.hex.ds.hdtp.core.app.common.page.converter.IPageAndPageDtoConverter;
import com.hex.ds.hdtp.core.app.common.page.dto.PageDto;
import com.hex.ds.hdtp.core.app.dqc.converter.IDqcTaskLogConverter;
import com.hex.ds.hdtp.core.app.dqc.dto.request.DqcTaskLogRequestDto;
import com.hex.ds.hdtp.core.app.dqc.dto.response.DqcTaskLogResponseDto;
import com.hex.ds.hdtp.core.app.dqc.service.IDqcTaskLogService;
import com.hex.ds.hdtp.core.inf.common.page.Page;
import com.hex.ds.hdtp.core.inf.dqc.po.DqcAuditLogPo;
import com.hex.ds.hdtp.core.inf.dqc.repository.IDqcTaskLogRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Package com.hex.ds.hdtp.core.app.dqc.service.impl
 * @ClassName DqcTaskLogService
 * @Description DQC任务日志服务
 * @Author gj.xu
 * @Date 2024/3/4 18:49
 * @Version v2.0
 **/
@Service
@Slf4j
@RequiredArgsConstructor(onConstructor_ = {@Lazy, @Autowired})
public class DqcTaskLogService implements IDqcTaskLogService {
    private final IDqcTaskLogConverter dqcTaskLogConverter;
    private final IPageAndPageDtoConverter pageAndPageDtoConverter;

    /**
     * DQC任务日志数据接口
     */
    private final IDqcTaskLogRepository dqcTaskLogRepository;
    @Override
    public PageData queryListByPage(DqcTaskLogRequestDto dqcTaskLogRequestDto, PageDto pageDto) {
        Page<DqcAuditLogPo> dqcAuditLogPoPage = dqcTaskLogRepository.queryListByPage(dqcTaskLogConverter.toDqcAuditLog(dqcTaskLogRequestDto), pageAndPageDtoConverter.toPage(pageDto));
        List<DqcTaskLogResponseDto> dqcTaskLogResponseDtos = dqcTaskLogConverter.toDqcResponseDto(dqcAuditLogPoPage.getData());
        return new PageData(dqcTaskLogResponseDtos,dqcAuditLogPoPage.getTotal());

    }

    @Override
    public void add(DqcTaskLogRequestDto dqcTaskLogRequestDto) {

        try{
            dqcTaskLogRepository.add(dqcTaskLogConverter.toDqcAuditLog(dqcTaskLogRequestDto));
        }catch (Exception e){
            throw new RuntimeException("新增Dqc日志失败" + e.getMessage());
        }
    }

    @Override
    public void modifyById(DqcTaskLogRequestDto dqcTaskLogRequestDto) {
        dqcTaskLogRepository.modifyById(dqcTaskLogConverter.toDqcAuditLog(dqcTaskLogRequestDto));
    }

    @Override
    public void removeById(String pkId) {
        dqcTaskLogRepository.removeById(pkId);
    }
}
